#ifndef BASICOJECT_H
#define BASICOJECT_H

#include <QObject>
#include <QString>
#include <QVector>
#include <QVariant>

enum ObjectType
{
    BASE = 0,
    NODE,
    ENTITY,
    PLANE,
    LIGHT,
    SCENE,
    CAMERA
};

class BasicObject : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QString id READ id WRITE setId)
    Q_PROPERTY(QList<QVariant> objects READ objects WRITE setObjects)

public:
    explicit BasicObject(QObject *parent = 0);
    virtual ~BasicObject() {}

    QString id() const {
        return m_id;
    }

    void setId(QString id) {
        this->m_id = id;
    }

    virtual ObjectType type() {
        return BASE;
    }

    virtual QList<QVariant> objects() {
        return m_objects;
    }

    virtual void setObjects(QList<QVariant> olst) {
        m_objects = olst;
    }

signals:

public slots:

protected:
    QString m_id;
    QList<QVariant> m_objects;
};

#endif // BASICOJECT_H
